package Test;

import java.util.ArrayList;
import java.util.Scanner;

public class WeilaiT {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n =sc.nextInt();
        int m = sc.nextInt();
        int d = sc.nextInt();
        int[][] oldTree = new int[m][2];
        int res = 0;
        ArrayList<Integer> newTree = new ArrayList<>();
        for (int i = 0; i < m; i++) {
            int index = sc.nextInt();
            int radio = sc.nextInt();
            oldTree[i][0] = index - radio;
            oldTree[i][1] = index + radio;
        }
//        int treeLeft = 0;
        int lastL = 0;
        int lastR = 0;
        for (int i = 0; i < m; i++) {
            int l = oldTree[i][0];
            int r = oldTree[i][1];
            if (lastR >= l){
                lastR = Math.max(r,lastR);
            }else {
                newTree.add(l - lastR);
//                lastL = l;
                lastR = r;
            }
        }
        for (int i = 0; i < newTree.size(); i++) {
            int tmp = newTree.get(i) / (2 * d);
            if (newTree.get(i) % (2 * d) == 0){
                res += tmp;
            }else {
                res += tmp+1;
            }
        }
        System.out.println(res);
    }
}
